www.gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/sub_carr_mapping.m

    function mapSymbCell = sub_carr_mapping(precodedSymb,iUE)
% 对预编码的复值符号进行资源粒子映射
% 从某个起始载波开始,将连续的可用载波资源分配给第iUE个用户
% 输入:precodedSymb 经过预编码的符号
%       iUE:用户序号
% 输出:子载波映射后的符号
%  Author:		程式小组(徐萌 张妙 张晓庆)
%  Date:		2010-07-11
%  ==========================================================
global LTE_par

nTx = LTE_par.BS_par.nAnt; % 基站端天线数
CFI = LTE_par.CFI;          % 控制格式占用OFDM符号数
FFT_SIZE = LTE_par.FFT_SIZE; % FFT点数
scPerRB = LTE_par.scPerRB; % 每个资源块包含的子载波数
nOfdmSymb = LTE_par.nOfdmSymb; % 每个子帧内OFDM符号数
nRB = LTE_par.UE_par.nRB(iUE); % 第iUE个用户的PRB数
cellID = LTE_par.BS_par.cellID; % 小区ID
iSubFrame = LTE_par.iSubFrame;          % 当前子帧号 取值为0~9
startCarr = LTE_par.schedule.startCarr(iUE);% 起始子载波位置

ns = iSubFrame*2;
nCarrUsed = nRB*scPerRB; % 第iUE个用户占用的子载波数
if FFT_SIZE == 1024
    RB_DL = 50;
elseif FFT_SIZE == 2048
    RB_DL = 100;
end
% 可用子载波位置 
availableCarr = [FFT_SIZE-RB_DL*scPerRB/2+1:FFT_SIZE 2:RB_DL*scPerRB/2+1];

% 导频占用位置
pilotLocation = find_pilot(cellID,nTx,scPerRB,nOfdmSymb,nRB,ns);
mapSymbCell = cell(nTx,1);

for iTx = 1:nTx
    mapSymbCell{iTx} = zeros(FFT_SIZE,nOfdmSymb);
    iSymb = 1;
    for iOfdm = CFI+1:nOfdmSymb
        for iCarr = 1:nCarrUsed
            if pilotLocation(iCarr,iOfdm) == 0
            mapSymbCell{iTx}(availableCarr(iCarr+startCarr),iOfdm) = precodedSymb(iTx,iSymb);
            iSymb = iSymb+1;
            end
        end
    end
end